package com.simple.rpc.core;


import com.simple.rpc.component.ComponentConfig;
import com.simple.rpc.model.ServiceInvokeMetaData;

/**
 * 服务执行
 *
 * @author mhh
 * @since 2020/9/17
 */
public abstract class AbstractRpcServiceInvoker implements RpcServiceInvoker {

    /**
     * 当前invoker的组件配置
     */
    protected ComponentConfig componentConfig;

    /**
     * 代理对象
     */
    protected RpcServiceProxy rpcServiceProxy;

    public void setComponentConfig(ComponentConfig componentConfig) {
        this.componentConfig = componentConfig;
    }

    public void setRpcServiceProxy(RpcServiceProxy rpcServiceProxy) {
        this.rpcServiceProxy = rpcServiceProxy;
    }

    @Override
    public Object invoke(ServiceInvokeMetaData serviceInvokeMetaData) {
        if (rpcServiceProxy == null) {
            System.out.println("发布服务不存在");
            return null;
        }
        return rpcServiceProxy.doInvoke(serviceInvokeMetaData);
    }
}
